package org.groupg.project.step;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

// 链式构建器
public class StepChain {
    private final List<Step> nodes = new ArrayList<>();  // 节点可以是 Step 或 ParallelGroup

    // 添加顺序执行的步骤
    public StepChain exe(Step step) {
        nodes.add(step);
        return this;
    }

    // 添加并行步骤组（直接传入多个 Step）
    public StepChain and(Step... steps) {
        nodes.add(new ParallelGroup(Arrays.asList(steps)));
        return this;
    }

    // 并行组标记（内部类）
    static class ParallelGroup implements Step {
        private final List<Step> steps;
        public ParallelGroup(List<Step> steps) {
            this.steps = steps;
        }
        public List<Step> getSteps() {
            return steps;
        }

        @Override
        public void execute(StepContext context) {

        }
    }

    public List<Step> getNodes() {
        return nodes;
    }
}